# 导包
import time
import unittest

import threadpool

import config
from scripts.test_login import TestLogin
from scripts.test_course import TestCourse
from lib import HTMLTestRunner_PY3
# 创建测试套件
from utils import GernaterResult

# suite = unittest.TestSuite()
# # 将测试用例添加到测试套件
# suite.addTests(unittest.makeSuite(TestLogin))
# suite.addTests(unittest.makeSuite(TestCourse))

# 使用HTMLTestRunner运行测试套件，生成测试报告
# 打开测试报告
# with open(config.BASE_PATH + f"/reports/test_report {time.strftime('%Y%m%d %H%S%M')}.html", mode='wb') as f:
#     # 实例化runner对象
#     runner = HTMLTestRunner_PY3.HTMLTestRunner(f)
#     # 使用runner运行测试套件，得到测试结果
#     result = runner.run(suite)
#
#     # 生成测试报告
#     runner.generateReport(suite, result)


# 使用threadpool来多线程运行测试用例 pip install threadpool
# 使用unittest.TestLoaders来寻找测试用例
# 实例化生成结果的类
gr = GernaterResult()
# 自动获取TestCase
cases = unittest.defaultTestLoader.discover(config.BASE_PATH+"/scripts", "test*.py")
print(cases)
# 创建线程池
pool = threadpool.ThreadPool(10)
# 制作请求
req_list = threadpool.makeRequests(gr.run_case, cases)
# 将请求添加到线程池，添加到线程池之后，会自动运行
for req in req_list:
    print("--------------req------------------:", req)
    pool.putRequest(req)

pool.wait() # 等待所有线程运行完成

result = gr.combine_result() # 整合多线程运行的结果

gr.runner.generateReport(cases, result) # 生成HTML测试报告了

